The need to store digital files, documents, pictures, images and other data continues to increase rapidly. In connection with the electronic storage of data, systems incorporating one or more data storage controllers have been devised. Storage controllers receive data read and write requests from host computers and control one or more physical storage devices to beneficially store or provide the requested data from/to the host computers.
In order to improve read and write performance, storage controllers often have cache memories. Cache memories provide temporary storage for frequently or recently accessed data in order to reduce average access time to data stored on storage devices controlled by storage controllers. Cache memories are typically much faster to access than storage devices, and do not incur the many latencies of preparing storage device commands, identifying the physical location(s) to access, and going through a storage device bus or network interconnect system.
Data writes to storage devices may be cached, or not. In a write through cache, every write to the cache also causes a corresponding write to the storage devices. Therefore, the data in the cache is always good since it is consistent with what has been stored to the storage devices. However, write through caches can limit write performance since a command completion is not sent to the host computer generating the write request until the data has been safely written to the slower storage devices.
Write performance to storage devices can be improved over write through performance by using a write back or copy back cache memory to store posted write data. Posted writes are host writes that have been stored to a write back cache, but have not yet been written to the storage devices. The storage controller generates a command completion to the host computer generating the write request after the data has been written to cache, but not yet written to the storage devices. Because the command completion is generated sooner than in the case of the write through cache, the host computer can issue a next data read or write request faster and throughput is thereby improved.